Text Data Preprocessing (Tokenization, Padding, Embedding)

Machine Learning - কেরাস ডিপ লার্নিং (Deep Learning with Keras) Natural Language Processing (NLP) এবং Text Classification |
192
192

Text Data Preprocessing হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা মেশিন লার্নিং বা ডীপ লার্নিং মডেল প্রশিক্ষণের আগে টেক্সট ডেটাকে উপযুক্ত ফর্ম্যাটে রূপান্তরিত করতে ব্যবহৃত হয়। এর মধ্যে টেক্সট ক্লিনিং, tokenization, padding, এবং embedding সহ অন্যান্য ধাপ অন্তর্ভুক্ত থাকে। চলুন, এই ধাপগুলির বিস্তারিত আলোচনা করি।


1. Tokenization

Tokenization হল একটি প্রক্রিয়া, যেখানে একটি বড় টেক্সট স্ট্রিংকে ছোট ছোট ইউনিট (যেমন শব্দ বা অক্ষর) বা tokens-এ ভাগ করা হয়। এটি মডেলের জন্য টেক্সট ডেটাকে যথাযথভাবে বিশ্লেষণ করা এবং এর উপাদানগুলোকে সনাক্ত করা সহজ করে।

শব্দ (Word) বা অক্ষর (Character) Tokenization:

  • Word Tokenization: এখানে একটি টেক্সটকে আলাদা আলাদা শব্দে বিভক্ত করা হয়।
  • Character Tokenization: এখানে একটি টেক্সটকে অক্ষরে বিভক্ত করা হয়।

Tokenization উদাহরণ:

from tensorflow.keras.preprocessing.text import Tokenizer

# উদাহরণ টেক্সট
texts = ["I love machine learning", "Machine learning is amazing"]

# Tokenizer তৈরি করা
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)

# টোকেনাইজড শব্দগুলি দেখা
sequences = tokenizer.texts_to_sequences(texts)
print(sequences)

Output:

[[1, 2, 3, 4], [3, 4, 5, 6]]

এখানে, শব্দগুলি ইন্টিজারে রূপান্তরিত হয়েছে (যেমন, "I" → 1, "love" → 2, "machine" → 3, ইত্যাদি)। texts_to_sequences() মেথডের মাধ্যমে টেক্সটকে সিকোয়েন্স আকারে রূপান্তরিত করা হয়েছে।


2. Padding

Padding হল একটি প্রক্রিয়া যেখানে টোকেনাইজড সিকোয়েন্সের দৈর্ঘ্য সমান করার জন্য এক বা একাধিক প্যাডিং যুক্ত করা হয়। বেশিরভাগ মেশিন লার্নিং মডেল সমান দৈর্ঘ্যের ইনপুট ডেটা চায়, তাই এই ধাপটি খুবই গুরুত্বপূর্ণ। pad_sequences() ফাংশনটি ব্যবহার করে আমরা সিকোয়েন্সের দৈর্ঘ্য সমান করতে পারি।

Padding উদাহরণ:

from tensorflow.keras.preprocessing.sequence import pad_sequences

# Padding করার আগে সিকোয়েন্স
sequences = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]

# Padding
padded_sequences = pad_sequences(sequences, padding='post')
print(padded_sequences)

Output:

[[1 2 3 0]
 [4 5 0 0]
 [6 7 8 9]]

এখানে, padding='post' ব্যবহার করা হয়েছে, যার মানে হল যে, প্যাডিং সিকোয়েন্সের শেষে যোগ হবে। এছাড়া, আপনি padding='pre' ব্যবহার করে প্যাডিং সিকোয়েন্সের শুরুতে যোগ করতে পারেন।


3. Embedding

Embedding হল একটি টেকনিক যা একটি শব্দ বা টোকেনকে একটি সুনির্দিষ্ট ডেনস ভেক্টরে রূপান্তরিত করে। এটি শব্দের গাণিতিক উপস্থাপনা, যা শব্দের মধ্যে সম্পর্ককে ধরতে সাহায্য করে। Keras এ Embedding লেয়ার ব্যবহার করা যায় যা অটোমেটিকভাবে টোকেন ভেক্টর তৈরি করে এবং মডেল প্রশিক্ষণের সময় এটি শিখে নেয়।

Embedding Layer Example:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, Flatten, Dense

# মডেল তৈরি করা
model = Sequential()

# Embedding layer (input_dim: vocabulary size, output_dim: embedding dimensions)
model.add(Embedding(input_dim=10, output_dim=8, input_length=4))

# Flattening এবং fully connected layer যোগ করা
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))

model.summary()

Explanation:

  • input_dim: ভোকাবুলারির সাইজ (যতগুলি আলাদা শব্দ বা টোকেন আপনার ডেটাতে থাকবে)।
  • output_dim: শব্দের জন্য ব্যবহৃত ভেক্টরের দৈর্ঘ্য বা embeddings এর সাইজ।
  • input_length: সিকোয়েন্সের দৈর্ঘ্য।

Embedding লেয়ার শব্দকে একটি গাণিতিক ভেক্টরে রূপান্তরিত করবে, যা মডেলটি শিখে নিতে সক্ষম। এখানে মডেলটি শুধুমাত্র একটি সিকোয়েন্সে 4 টোকেন নিয়ে কাজ করবে এবং প্রতিটি টোকেনের জন্য 8 ডাইমেনশনাল embedding তৈরি করবে।


4. Full Example

এখানে একটি পূর্ণাঙ্গ উদাহরণ দেওয়া হলো, যাতে আমরা টোকেনাইজেশন, প্যাডিং এবং এমবেডিং একত্রে ব্যবহার করে একটি টেক্সট ডেটাসেট প্রিপ্রসেস করি।

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, Flatten, Dense

# উদাহরণ টেক্সট ডেটা
texts = ["I love machine learning", "Deep learning is fun", "Machine learning is great"]

# Tokenizer তৈরি করা
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)

# টোকেনাইজড সিকোয়েন্স
sequences = tokenizer.texts_to_sequences(texts)

# Padding করা
padded_sequences = pad_sequences(sequences, padding='post')

# মডেল তৈরি করা
model = Sequential()
model.add(Embedding(input_dim=10, output_dim=8, input_length=padded_sequences.shape[1]))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))

# মডেল সারাংশ
model.summary()

# মডেল প্রশিক্ষণ (এই উদাহরণে আমরা টার্গেট ডেটা দেব না)
# model.fit(padded_sequences, target_data, epochs=10)

5. সারাংশ

  • Tokenization: টেক্সট ডেটাকে ছোট ছোট ইউনিটে (যেমন, শব্দ বা অক্ষর) বিভক্ত করার প্রক্রিয়া।
  • Padding: টোকেনাইজড সিকোয়েন্সের দৈর্ঘ্য সমান করা, যাতে মডেলটিতে সমান আকারের ইনপুট পাঠানো যায়।
  • Embedding: প্রতিটি টোকেনকে একটি ডেনস ভেক্টরে রূপান্তরিত করা, যাতে শব্দের সম্পর্ক বুঝতে মডেলটি সক্ষম হয়।

এই প্রক্রিয়াগুলি মেশিন লার্নিং মডেল প্রশিক্ষণের জন্য টেক্সট ডেটা প্রিপ্রসেসিংয়ের গুরুত্বপূর্ণ অংশ।

Content added By
Promotion